home *** CD-ROM | disk | FTP | other *** search
- package org.apache.xalan.xslt;
-
- import com.ibm.bsf.BSFManager;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.io.Serializable;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.util.Hashtable;
- import java.util.StringTokenizer;
- import java.util.Vector;
- import org.apache.xalan.xpath.ExtensionFunctionHandler;
- import org.apache.xalan.xpath.XPathException;
- import org.apache.xalan.xpath.XPathProcessorException;
- import org.apache.xalan.xpath.dtm.DTMLiaison;
- import org.apache.xalan.xpath.xdom.XercesLiaison;
- import org.apache.xalan.xpath.xml.QName;
- import org.apache.xalan.xpath.xml.XMLParserLiaison;
- import org.w3c.dom.Attr;
- import org.w3c.dom.Document;
- import org.w3c.dom.Element;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
- import org.xml.sax.InputSource;
- import org.xml.sax.Parser;
- import org.xml.sax.SAXException;
-
- public class ExtensionNSHandler extends ExtensionFunctionHandler implements Serializable {
- transient XSLTEngineImpl xslp;
- Hashtable elements = new Hashtable();
- boolean componentDescLoaded;
-
- public ExtensionNSHandler(XSLTEngineImpl var1, String var2) {
- super(var2);
- this.xslp = var1;
- }
-
- public ExtensionNSHandler(XSLTEngineImpl var1, String var2, String var3, String var4, String var5, String var6, String var7) {
- super(var2, var4, var5, var6, var7);
- this.xslp = var1;
- this.setElements(var3);
- this.componentDescLoaded = true;
- }
-
- public void setFunctions(String var1) {
- super.setFunctions(var1);
- this.componentDescLoaded = true;
- }
-
- public void setScript(String var1, String var2, String var3) {
- super.setScript(var1, var2, var3);
- this.componentDescLoaded = true;
- }
-
- public void setElements(String var1) {
- if (var1 != null) {
- StringTokenizer var2 = new StringTokenizer(var1, " \t\n\r", false);
- Object var3 = new Object();
-
- while(var2.hasMoreTokens()) {
- String var4 = var2.nextToken();
- this.elements.put(var4, var3);
- }
-
- this.componentDescLoaded = true;
- }
- }
-
- public boolean isElementAvailable(String var1) {
- return this.elements.get(var1) != null;
- }
-
- public void processElement(String var1, Element var2, XSLTEngineImpl var3, Stylesheet var4, Node var5, Node var6, QName var7, Class var8, Object var9) throws XSLProcessorException, MalformedURLException, FileNotFoundException, IOException, SAXException {
- if (!super.componentStarted) {
- try {
- this.startupComponent(var8);
- } catch (XPathProcessorException var14) {
- throw new XSLProcessorException(((XPathException)var14).getMessage(), var14);
- }
- }
-
- Object var10 = null;
-
- try {
- XSLProcessorContext var11 = new XSLProcessorContext(var3, var4, var5, var6, var7);
- Vector var12 = new Vector(2);
- var12.addElement(var11);
- var12.addElement(var2);
- var10 = super.callFunction(var1, var12, var9, var8);
- } catch (XPathProcessorException var13) {
- throw new XSLProcessorException(((XPathException)var13).getMessage(), var13);
- }
-
- if (var10 != null) {
- var3.outputToResultTree(var4, var10);
- }
-
- }
-
- protected void startupComponent(Class var1) throws XPathProcessorException {
- if (!ExtensionFunctionHandler.bsfInitialized) {
- Class var2 = ExtensionFunctionHandler.class$com$ibm$bsf$BSFManager != null ? ExtensionFunctionHandler.class$com$ibm$bsf$BSFManager : (ExtensionFunctionHandler.class$com$ibm$bsf$BSFManager = class$("com.ibm.bsf.BSFManager"));
- synchronized(var2){}
-
- try {
- ExtensionFunctionHandler.bsfInitialized = true;
- BSFManager.registerScriptingEngine("xslt-javaclass", "org.apache.xalan.xpath.XSLTJavaClassEngine", new String[0]);
- } catch (Throwable var6) {
- throw var6;
- }
- }
-
- if (!this.componentDescLoaded) {
- try {
- this.loadComponentDescription();
- } catch (Exception var5) {
- throw new XPathProcessorException(((Throwable)var5).getMessage(), var5);
- }
- }
-
- super.startupComponent(var1);
- }
-
- private void loadComponentDescription() throws XSLProcessorException, MalformedURLException, FileNotFoundException, IOException, SAXException {
- try {
- String var12 = super.namespaceUri.startsWith("class:") ? super.namespaceUri.substring(6) : super.namespaceUri;
- Class.forName(var12);
- this.setScript("javaclass", super.namespaceUri, (String)null);
- this.componentDescLoaded = true;
- } catch (Exception var11) {
- URL var1 = this.xslp.getURLFromString(super.namespaceUri, this.xslp.m_stylesheetRoot.m_baseIdent);
- Object var2 = this.xslp.m_parserLiaison;
- if (var2 instanceof DTMLiaison) {
- var2 = new XercesLiaison();
- ((Parser)var2).setErrorHandler(new ExtErrorHandler(this, var1.toString()));
- }
-
- Object var3 = null;
- ((Parser)var2).parse(new InputSource(var1.toString()));
- Document var4 = ((XMLParserLiaison)var2).getDocument();
- Element var13 = var4.getDocumentElement();
- this.setElements(var13.getAttribute("elements"));
- this.setFunctions(var13.getAttribute("functions"));
- NodeList var5 = var13.getElementsByTagName("lxslt:script");
- switch (var5.getLength()) {
- case 1:
- Element var6 = (Element)var5.item(0);
- String var7 = var6.getAttribute("lang");
- Attr var8 = var6.getAttributeNode("src");
- String var9 = var8 == null ? null : var8.getValue();
- String var10 = this.getScriptString(var6);
- this.setScript(var7, var9, var10);
- case 0:
- this.componentDescLoaded = true;
- return;
- default:
- throw new XSLProcessorException("too many <script>s in component");
- }
- }
- }
-
- private String getScriptString(Element param1) {
- // $FF: Couldn't be decompiled
- }
-
- // $FF: synthetic method
- static Class class$(String var0) {
- try {
- return Class.forName(var0);
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
- }
- }
-